<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var a1, b2, c3
        // Promise
        var p1 = new Promise((resolve, reject) => {
            setTimeout(() => {
                a1 = 12
                resolve('第yi个promise')
            }, 6000)
        })
        // var p2 = new Promise((resolve, reject) => {
        //     setTimeout(() => {
        //         b2 = 12
        //         resolve('第er个promise')
        //     }, 1000)
        // })
        // var p3 = new Promise((resolve, reject) => {
        //     setTimeout(() => {
        //         c3 = 12
        //         resolve('第san个promise')
        //     }, 3000)
        // })
        // p1.then( res => {
        //     console.log(res)
        //     console.log(a1 + b2 + c3);
        //     return p2
        // }).then( res => {
        //     console.log(res)
        //     console.log(a1 + b2 + c3);
        //     return p3
        // }).then( res =>{
        //     console.log(res);
        //     console.log(a1 + b2 + c3);
        // })
        // p1.then(res => {
        //     console.log(a1 + b2 + c3)
        //     return new Promise((resolve, reject) => {
        //         setTimeout(() => {
        //             b2 = 13
        //             console.log(a1 + b2 + c3);
        //             resolve('第二个promise')
        //         }, 1000)
        //     })
        // }).then(res2 => {
        //     console.log(res2)
        //     return new Promise((resolve, reject) => {
        //         setTimeout(() => {
        //             c3 = 10
        //             console.log(a1 + b2 + c3);
        //             resolve('第三个promise')
        //         }, 2000)
        //     })
        // }).then(res3 => {
        //     console.log(res3)
        // })

        // async function asy() {
        //     await new Promise(() => {
        //         setTimeout(() => {
        //             console.log('await1')
        //         }, 2000)
        //     })
        //     await new Promise(() => {
        //         setTimeout(() => {
        //             console.log('await2')
        //         }, 3000)
        //     })
        // }
        // asy()

        function test1() {
            return new Promise( (resolve,reject) => {
                setTimeout( () => {
                    console.log('test1执行并赋值')
                    resolve(111)
                },2000)
            })
        }
        function test2() {
            return new Promise( (resolve,reject) => {
                setTimeout( () => {
                    console.log('test2 5秒后执行并赋值')
                    resolve(222)
                },5000)
            })
        }
        function test3() {
            return new Promise( (resolve,reject) => {
                setTimeout( () => {
                    console.log('test3 3秒后执行并赋值')
                    resolve(333)
                },3000)
            })
        }
        test1().then( res =>{
            console.log(res);
            return test2()
        }).then( res => {
            console.log(res);
            return test3()
        }).then( res =>{
            console.log(res);
        })
        // async function action() {
        //     // 按照执行快慢执行，没有依次执行
        //     // test1()
        //     // test2()
        //     // test3()
        //    await test1()
        //    await test2()
        //    await test3()
        // }
        // action()
    </script>
</head>

<body>

</body>

</html>